/************************************************
*
*  getch.c
*
*  Part of the TAOSF SSA system.
*
*  Provides a linux-console getch function.
*  
*  Revision 1.0, 5/10/07, SBS
*
**************************************************************************
*
*  This program is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but 
*  WITHOUT ANY WARRANTY; without even the implied warranty of 
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License 
*  along with this program; if not, write to the Free Software Foundation, 
*  Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 
*
**************************************************************************/

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

#include "getch.h"

int getch(void ) 
{
	struct termios oldt,newt;
	int ch;	

	tcgetattr( STDIN_FILENO, &oldt );

	newt = oldt;

	newt.c_lflag &= ~( ICANON | ECHO );

	tcsetattr( STDIN_FILENO, TCSANOW, &newt );

	ch = getchar();

	tcsetattr( STDIN_FILENO, TCSANOW, &oldt );

	return ch;
}
